-
-
Notifications
You must be signed in to change notification settings - Fork 546
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
luhn: tweak canonical tests #547
Conversation
exercises/luhn/canonical-data.json
Outdated
@@ -11,7 +11,7 @@ | |||
"expected": false | |||
}, | |||
{ | |||
"description": "simple valid sin", | |||
"description": "simple valid SIN", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Capitalized sin
-> SIN
throughout.
exercises/luhn/canonical-data.json
Outdated
"description": "another valid Canadian SIN", | ||
"input": "055 444 285", | ||
"expected": true | ||
}, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the PR that added this test, the following reasoning was given:
Part of it was the contrast with 055-444-285, and part of it was the thought that having a couple of different longer valid numbers might help someone who was struggling to work out how the algorithm needed to be implemented.
I moved it earlier in the suite so that it is more likely encountered by someone who is still trying to work out the algorithm, and updated the language in the test cases that contrast with this one to make that comparison more clear.
"input": "046a 454 286", | ||
"expected": false | ||
}, | ||
{ | ||
"description": "punctuation is not allowed", | ||
"description": "valid strings with punctuation included become invalid", | ||
"input": "055-444-285", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Compare to valid case 055 444 285
.
"input": "055-444-285", | ||
"expected": false | ||
}, | ||
{ | ||
"description": "symbols are not allowed", | ||
"description": "valid strings with symbols included become invalid", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Compare to valid case 055 444 285
.
{ | ||
"description": "another valid sin", | ||
"input": "055 444 285", | ||
"description": "more than a single zero is valid", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Updated to state the limitation here more clearly, and moved the space character to indicate that a "chain" of zeros is not required.
"expected": true | ||
}, | ||
{ | ||
"description": "nine doubled is nine", | ||
"description": "input digit 9 is correctly converted to output digit 9", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Nine doubled is not nine; tried to make this a little more explicit!
exercises/luhn/canonical-data.json
Outdated
"description": "another valid sin", | ||
"input": "055 444 285", | ||
"description": "more than a single zero is valid", | ||
"input": "00 000", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe "0 0000"
would be even better here?
I was also tempted to update the description for this test to make it more clear that this is the only test that will fail if the "wrong" set of alternating digits are manipulated. Thoughts on that?
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good ordering change, good description change. Note that in #522 I was in doubt about whether 055 444 285 should be present at all (it is unlikely any student will come up with an implementation that passes all tests except that one).
I was also tempted to update the description for this test to make it more clear that this is the only test that will fail if the "wrong" set of alternating digits are manipulated
Indeed, I was very inspired by exercism/go#500
If you wanted to go one further to emphasize it, you could try this.
First, we have the case 059
. This is a short valid SIN, but since it has an odd number of digits, it doesn't matter whether you double from the left or right.
Then, we have 59
which has an even number of digits to show that it's important to double the right digits.
Good call; I'll update that now! |
@petertseng updated with a few changes:
|
@petertseng see also #549 which I believe addresses another potential source of confusion for implementors. |
These changes look good to me. The descriptions and the test cases make sense and there doesn't seem to be enough overlap between them where they could be condensed down without sacrificing something. I don't have merge rights here but 👍 |
Great work, thanks! 🎉 |
travis-ci build status badge
No description provided.